package org.study.javafx.study01.tab.code;

import cn.hutool.core.date.DateUtil;
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.*;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;
import lombok.extern.slf4j.Slf4j;
import org.study.javafx.study01.AppStarter;
import org.study.javafx.study01.config.AppConfig;

/**
 * 作用描述
 *
 * @author doveylovey
 * @version v1.0.0
 * @email 1135782208@qq.com
 * @date 2024年08月18日
 */
@Slf4j
public class TabCode1 extends Application {
    /**
     * 直接运行此方法会报如下错误：
     * 错误: 缺少 JavaFX 运行时组件, 需要使用该组件来运行此应用程序
     * 请运行 {@link AppStarter#main(String[])}
     */
    public static void main(String[] args) {
        AppConfig.init();
        launch(args);
    }

    @Override
    public void init() throws Exception {
        super.init();
    }

    @Override
    public void start(Stage stage) throws Exception {
        TabPane tabPane = new TabPane();
        // 创建表单
        VBox form1 = createForm("这是Tab-1中的内容");
        VBox form2 = createForm("这是Tab-2中的内容");
        // 设置Tab内容
        Tab tab1 = new Tab("Tab-1");
        tab1.setContent(form1);
        Tab tab2 = new Tab("Tab-2");
        tab2.setContent(form2);

        tabPane.getTabs().addAll(tab1, tab2);
        Scene scene = new Scene(new VBox(tabPane), 500, 300);
        stage.setTitle("JavaFx布局示例：TabPane");
        stage.setScene(scene);
        stage.show();
    }

    // 创建表单的辅助方法
    private VBox createForm(String formTitle) {
        VBox form = new VBox();
        Label label = new Label(formTitle);
        TextField textField = new TextField();
        textField.setMaxWidth(490);
        textField.setMaxHeight(100);
        Button button = new Button("获取");
        button.setOnAction(event -> {
            String text = label.getText();
            log.info("输入的内容是：{}", text);
            textField.setText(DateUtil.now() + " ---> " + text);
        });
        form.getChildren().addAll(label, textField, button);
        return form;
    }

    @Override
    public void stop() throws Exception {
        super.stop();
    }
}
